package com.maiji.cloud.service;

import java.util.List;

import com.baomidou.mybatisplus.service.IService;
import com.maiji.cloud.entities.community.ComComment;
import com.maiji.cloud.entities.login.MaijiArticle;
import com.maiji.cloud.request.BaseDataReqDto;
import com.maiji.cloud.request.login.ArticleCommentReqData;
import com.maiji.cloud.response.BaseDataResDto;
import com.maiji.cloud.response.BaseMetaResDto;
import com.maiji.cloud.response.BaseResDto;
import com.maiji.cloud.response.login.ArticleCommentListResData;
import com.maiji.cloud.response.login.IsPraiseOrCollectResData;
import com.maiji.cloud.response.login.UserInfoResData;

public interface ArticleService extends IService<MaijiArticle> {
	/**
	 * 文章点赞
	 * @param param
	 * @param token
	 * @return
	 */
	public BaseResDto articlePraise(BaseDataReqDto<String> param, String token);
	/**
	 * 文章转发
	 * @param param
	 * @param token
	 * @return
	 */
	public BaseResDto articleTranspond(BaseDataReqDto<String> param, String token);
	/**
	 * 文章评论/评论回复
	 * @param param
	 * @param token
	 * @return
	 */
	public BaseResDto articleComment(BaseDataReqDto<ArticleCommentReqData> param, String token);
	/**
	 * 
	 * @param param
	 * @param token
	 * @return
	 */
	public BaseMetaResDto<List<ArticleCommentListResData>> getArticleCommentList(BaseDataReqDto<String> param);
	/**
	 * 根据评论ID获得评论回复列表（分页）
	 * @param param
	 * @return
	 */
	public BaseMetaResDto<List<ArticleCommentListResData>> getArticleCommentReply(BaseDataReqDto<String> param);
	/**
	 * 取消点赞
	 * @param param
	 * @param token
	 * @return
	 */
	public BaseResDto cancelArticlePraise(BaseDataReqDto<String> param, String token);
	/**
	 * app用户操作删除评论
	 * @param param
	 * @param userId 
	 * @return
	 */
	public BaseResDto deleteArticleComment(BaseDataReqDto<String> param, String userId);
	/**
	 * 根据文章id判断用户是否点赞
	 * @param articleId
	 * @param userId
	 * @return
	 */
	public BaseDataResDto<IsPraiseOrCollectResData> isPraise(String articleId, String userId);
	/**
	 * 文章收藏
	 * @param articleId
	 * @param userId
	 * @return
	 */
	public BaseResDto articleCollect(String articleId, String userId);
	/**
	 * 文章取消收藏
	 * @param articleId
	 * @param userId
	 * @return
	 */
	public BaseResDto cancelArticleCollect(String articleId, String userId);
	/**
	 * 文章收藏列表
	 * @param uuId
	 * @return
	 */
	public BaseDataResDto<List<MaijiArticle>> articleCollectList(BaseDataReqDto<String> param);
	/**
	 * 根据文章ID获取点赞用户列表
	 * @param param
	 * @param token
	 * @return
	 */
	public BaseMetaResDto<List<UserInfoResData>> getArticlePraiseList(BaseDataReqDto<String> param);

    BaseDataResDto<MaijiArticle> findMaijiArticleById(String articleId);

}
